home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / c / tde31.zip / GLOBAL.H < prev    next >
Text File  |  1993-08-29  |  29KB  |  429 lines

  1. /*******************  start of original comments  ********************/
  2. /*
  3.  * Written by Douglas Thomson (1989/1990)
  4.  *
  5.  * This source code is released into the public domain.
  6.  */
  7. /*********************  end of original comments   ********************/
  8.  
  9. /*
  10.  * New editor name:  TDE, the Thomson-Davis Editor.
  11.  * Author:           Frank Davis
  12.  * Date:             June 5, 1991
  13.  *
  14.  * This modification of Douglas Thomson's code is released into the
  15.  * public domain, Frank Davis.  You may distribute it freely.
  16.  *
  17.  * See "tdestr.h" for a description of these variables. C requires global
  18.  *  variables to be declared "extern" in all modules except one.  This file
  19.  *  is included in ed.c and it should not be included in any other module.
  20.  */
  21.  
  22. displays g_display;
  23.  
  24. status_infos g_status;
  25.  
  26. boyer_moore_type bm;
  27.  
  28. boyer_moore_type sas_bm;
  29.  
  30. CEH ceh;
  31.  
  32. SORT sort;
  33.  
  34. DIFF diff;
  35.  
  36. MACRO_STACK macro_stack[MAX_KEYS];      /* small, simple stack for calls */
  37.  
  38. REGX_INFO regx;
  39.  
  40. REGX_INFO sas_regx;
  41.  
  42. NFA_TYPE nfa;
  43.  
  44. NFA_TYPE sas_nfa;
  45.  
  46.  
  47. /*
  48.  *   those who use special accented characters as part of normal character set
  49.  *     in text do not particularly care for a straight ASCII sort sequence.
  50.  *
  51.  *   this modified ASCII sorting sequence for special accent characters is
  52.  *     useful with Enlish, Esperanto, and French.
  53.  */
  54. SORT_ORDER sort_order = {
  55.                /* ignore case */
  56.    { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
  57.      '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
  58.      '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
  59.      '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
  60.      ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',',
  61.      '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  62.      ':', ';', '<', '=', '>', '?',
  63.      '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
  64.      'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[',
  65.      '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
  66.      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
  67.      'x', 'y', 'z', '{', '|', '}', '~', '', 'c', 'u', 'e', 'a', 'a', 'a',
  68.      'a', 'c', 'e', 'e', 'e', 'i', 'i', 'i', 'a', 'a', 'e', 'a', 'a', 'o',
  69.      'o', 'o', 'u', 'u', 'y', 'o', 'u', '¢', '£', '¥', '₧', 'ƒ', 'a', 'i',
  70.      'o', 'u', 'n', 'n', 'ª', 'º', '¿', '⌐', '¬', '½', '¼', '¡', '«', '»',
  71.      '░', '▒', '▓', '│', '┤', '╡', '╢', '╖', '╕', '╣', '║', '╗', '╝', '╜',
  72.      '╛', '┐', '└', '┴', '┬', '├', '─', '┼', '╞', '╟', '╚', '╔', '╩', '╦',
  73.      '╠', '═', '╬', '╧', '╨', '╤', '╥', '╙', '╘', '╒', '╓', '╫', '╪', '┘',
  74.      '┌', '█', '▄', '▌', '▐', '▀', 'α', 'ß', 'Γ', 'π', 'Σ', 'σ', 'µ', 'τ',
  75.      'Φ', 'Θ', 'Ω', 'δ', '∞', 'φ', 'ε', '∩', '≡', '±', '≥', '≤', '⌠', '⌡',
  76.      '÷', '≈', '°', '∙', '·', '√', 'ⁿ', '²', '■', ' ' },
  77.                /* match case */
  78.    { '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07',
  79.      '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f',
  80.      '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17',
  81.      '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f',
  82.      ' ', '!', '\"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',',
  83.      '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  84.      ':', ';', '<', '=', '>', '?',
  85.      '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
  86.      'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[',
  87.      '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
  88.      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
  89.      'x', 'y', 'z', '{', '|', '}', '~', '', 'C', 'u', 'e', 'a', 'a', 'a',
  90.      'a', 'c', 'e', 'e', 'e', 'i', 'i', 'i', 'A', 'A', 'E', 'a', 'A', 'o',
  91.      'o', 'o', 'u', 'u', 'y', 'O', 'U', '¢', '£', '¥', '₧', 'ƒ', 'a', 'i',
  92.      'o', 'u', 'n', 'N', 'ª', 'º', '¿', '⌐', '¬', '½', '¼', '¡', '«', '»',
  93.      '░', '▒', '▓', '│', '┤', '╡', '╢', '╖', '╕', '╣', '║', '╗', '╝', '╜',
  94.      '╛', '┐', '└', '┴', '┬', '├', '─', '┼', '╞', '╟', '╚', '╔', '╩', '╦',
  95.      '╠', '═', '╬', '╧', '╨', '╤', '╥', '╙', '╘', '╒', '╓', '╫', '╪', '┘',
  96.      '┌', '█', '▄', '▌', '▐', '▀', 'α', 'ß', 'Γ', 'π', 'Σ', 'σ', 'µ', 'τ',
  97.      'Φ', 'Θ', 'Ω', 'δ', '∞', 'φ', 'ε', '∩', '≡', '±', '≥', '≤', '⌠', '⌡',
  98.      '÷', '≈', '°', '∙', '·', '√', 'ⁿ', '²', '■', ' ' },
  99. };
  100.  
  101.  
  102. mode_infos mode = {
  103.    "$ modes",           /* signature for mode structure, 8 chars */
  104.    0,                   /* initial color scheme */
  105.    FALSE,               /* sync mode? */
  106.    TRUE,                /* sync semaphore must be TRUE - DO NOT CHANGE */
  107.    FALSE,               /* macro recording mode must be FALSE - DO NOT CHANGE */
  108.    TRUE,                /* insert mode */
  109.    TRUE,                /* indent mode */
  110.    8,                   /* tab size */
  111.    8,                   /* tab size */
  112.    TRUE,                /* default smart tab mode */
  113.    FALSE,               /* inflate tabs? */
  114.    IGNORE,              /* sort case */
  115.    FALSE,               /* enhanced keyboard flag - set in console.c */
  116.    SMALL_INS,           /* default cursor size == small insert */
  117.    "<=======   End of File   =======>",       /* eof message */
  118.    FALSE,               /* default FALSE = do not write ^Z at end of file */
  119.    NATIVE,              /* default write <cr><lf> at eol */
  120.    TRUE,                /* default remove trailing space on edited lines */
  121.    FALSE,               /* default show eol character is off */
  122.    NO_WRAP,             /* default word wrap mode is off */
  123.    0,                   /* default left margin - add 1 to margins for display */
  124.    2,                   /* default paragraph begin */
  125.    71,                  /* default right margin */
  126.    FALSE,               /* default justify right margin */
  127.    FALSE,               /* format paragraph/text semaphore - DO NOT CHANGE */
  128.    UNDO_STACK_LEN,      /* number lines in undo buffer */
  129.    FALSE,               /* default backup mode */
  130.    TRUE,                /* default ruler mode */
  131.    MM_DD_YY,            /* default date style */
  132.    _12_HOUR             /* default time style */
  133. };
  134.  
  135.  
  136. /*
  137.  * Default color settings.  Incidentally, I'm color blind (mild red-green) and
  138.  * the default colors look fine to me, Frank.
  139.  */
  140. COLORS colour = {
  141.    "$colors",
  142.    { { HERC_REVERSE, HERC_NORMAL, HERC_UNDER, HERC_REVERSE, HERC_REVERSE,
  143.      HERC_HIGH, HERC_NORMAL, HERC_NORMAL, HERC_HIGH, HERC_HIGH, HERC_HIGH,
  144.      HERC_REVERSE, HERC_REVERSE, HERC_NORMAL },
  145.    { COLOR_HEAD, COLOR_TEXT, COLOR_DIRTY, COLOR_MODE, COLOR_BLOCK,
  146.      COLOR_MESSAGE, COLOR_HELP, COLOR_DIAG, COLOR_EOF, COLOR_CURL, COLOR_RULER,
  147.      COLOR_POINTER, COLOR_TEXT, COLOR_OVRS } }
  148. };
  149.  
  150.  
  151. /*
  152.  * do_it is an array of pointers to functions that return int with an argument
  153.  * that is a pointer to a window.  Is that right???
  154.  */
  155. int  (* (do_it[NUM_FUNCS]))( WINDOW * ) = {
  156.    insert_overwrite,                /*   regular text keys          0  */
  157.    get_help,                        /*   Help                       1  */
  158.    insert_newline,                  /*   Rturn                      2  */
  159.    next_line,                       /*   NextLine                   3  */
  160.    beg_next_line,                   /*   BegNextLine                4  */
  161.    move_down,                       /*   LineDown                   5  */
  162.    move_up,                         /*   LineUp                     6  */
  163.    move_right,                      /*   CharRight                  7  */
  164.    move_left,                       /*   CharLeft                   8  */
  165.    pan_right,                       /*   PanRight                   9  */
  166.    pan_left,                        /*   PanLeft                   10  */
  167.    word_right,                      /*   WordRight                 11  */
  168.    word_left,                       /*   WordLeft                  12  */
  169.    page_down,                       /*   ScreenDown                13  */
  170.    page_up,                         /*   ScreenUp                  14  */
  171.    goto_end_file,                   /*   EndOfFile                 15  */
  172.    goto_top_file,                   /*   TopOfFile                 16  */
  173.    goto_bottom,                     /*   BotOfScreen               17  */
  174.    goto_top,                        /*   TopOfScreen               18  */
  175.    goto_eol,                        /*   EndOfLine                 19  */
  176.    home,                            /*   BegOfLine                 20  */
  177.    goto_line,                       /*   JumpToLine                21  */
  178.    center_window,                   /*   CenterWindow              22  */
  179.    center_window,                   /*   CenterLine                23  */
  180.    horizontal_screen_right,         /*   HorizontalScreenRight     24  */
  181.    horizontal_screen_left,          /*   HorizontalScreenLeft      25  */
  182.    scroll_down,                     /*   ScrollDnLine              26  */
  183.    scroll_up,                       /*   ScrollUpLine              27  */
  184.    pan_up,                          /*   PanUp                     28  */
  185.    pan_down,                        /*   PanDn                     29  */
  186.    toggle_overwrite,                /*   ToggleOverWrite           30  */
  187.    toggle_smart_tabs,               /*   ToggleSmartTabs           31  */
  188.    toggle_indent,                   /*   ToggleIndent              32  */
  189.    toggle_ww,                       /*   ToggleWordWrap            33  */
  190.    toggle_crlf,                     /*   ToggleCRLF                34  */
  191.    toggle_trailing,                 /*   ToggleTrailing            35  */
  192.    toggle_z,                        /*   ToggleZ                   36  */
  193.    toggle_eol,                      /*   ToggleEol                 37  */
  194.    toggle_sync,                     /*   ToggleSync                38  */
  195.    toggle_ruler,                    /*   ToggleRuler               39  */
  196.    toggle_tabinflate,               /*   ToggleTabInflate          40  */
  197.    set_tabstop,                     /*   SetTabs                   41  */
  198.    set_left_margin,                 /*   SetLeftMargin             42  */
  199.    set_right_margin,                /*   SetRightMargin            43  */
  200.    set_paragraph_margin,            /*   SetParagraphMargin        44  */
  201.    format_paragraph,                /*   FormatParagraph           45  */
  202.    format_paragraph,                /*   FormatText                46  */
  203.    flush_left,                      /*   LeftJustify               47  */
  204.    flush_right,                     /*   RightJustify              48  */
  205.    flush_center,                    /*   CenterJustify             49  */
  206.    tab_key,                         /*   Tab                       50  */
  207.    backtab,                         /*   BackTab                   51  */
  208.    match_pair,                      /*   ParenBalance              52  */
  209.    back_space,                      /*   BackSpace                 53  */
  210.    char_del_under,                  /*   DeleteChar                54  */
  211.    char_del_under,                  /*   StreamDeleteChar          55  */
  212.    line_kill,                       /*   DeleteLine                56  */
  213.    eol_kill,                        /*   DelEndOfLine              57  */
  214.    word_delete,                     /*   WordDelete                58  */
  215.    insert_newline,                  /*   AddLine                   59  */
  216.    insert_newline,                  /*   SplitLine                 60  */
  217.    join_line,                       /*   JoinLine                  61  */
  218.    dup_line,                        /*   DuplicateLine             62  */
  219.    undo_line,                       /*   AbortCommand              63  */
  220.    undo_line,                       /*   UndoLine                  64  */
  221.    undo,                            /*   UndoDelete                65  */
  222.    toggle_search_case,              /*   ToggleSearchCase          66  */
  223.    find_string,                     /*   FindForward               67  */
  224.    find_string,                     /*   FindBackward              68  */
  225.    find_string,                     /*   RepeatFindForward1        69  */
  226.    find_string,                     /*   RepeatFindForward2        70  */
  227.    find_string,                     /*   RepeatFindBackward1       71  */
  228.    find_string,                     /*   RepeatFindBackward2       72  */
  229.    replace_string,                  /*   ReplaceString             73  */
  230.    define_diff,                     /*   DefineDiff                74  */
  231.    repeat_diff,                     /*   RepeatDiff                75  */
  232.    mark_block,                      /*   MarkBlock                 76  */
  233.    mark_block,                      /*   MarkLine                  77  */
  234.    mark_block,                      /*   MarkStream                78  */
  235.    unmark_block,                    /*   UnMarkBlock               79  */
  236.    move_copy_delete_overlay_block,  /*   FillBlock                 80  */
  237.    move_copy_delete_overlay_block,  /*   NumberBlock               81  */
  238.    move_copy_delete_overlay_block,  /*   CopyBlock                 82  */
  239.    move_copy_delete_overlay_block,  /*   KopyBlock                 83  */
  240.    move_copy_delete_overlay_block,  /*   MoveBlock                 84  */
  241.    move_copy_delete_overlay_block,  /*   OverlayBlock              85  */
  242.    move_copy_delete_overlay_block,  /*   DeleteBlock               86  */
  243.    move_copy_delete_overlay_block,  /*   SwapBlock                 87  */
  244.    block_write,                     /*   BlockToFile               88  */
  245.    block_print,                     /*   PrintBlock                89  */
  246.    block_expand_tabs,               /*   BlockExpandTabs           90  */
  247.    block_compress_tabs,             /*   BlockCompressTabs         91  */
  248.    block_compress_tabs,             /*   BlockIndentTabs           92  */
  249.    block_trim_trailing,             /*   BlockTrimTrailing         93  */
  250.    block_convert_case,              /*   BlockUpperCase            94  */
  251.    block_convert_case,              /*   BlockLowerCase            95  */
  252.    block_convert_case,              /*   BlockRot13                96  */
  253.    block_convert_case,              /*   BlockFixUUE               97  */
  254.    block_email_reply,               /*   BlockEmailReply           98  */
  255.    block_convert_case,              /*   BlockStripHiBit           99  */
  256.    sort_box_block,                  /*   SortBoxBlock             100  */
  257.    date_time_stamp,                 /*   DateTimeStamp            101  */
  258.    edit_another_file,               /*   EditFile                 102  */
  259.    dir_help,                        /*   DirList                  103  */
  260.    file_file,                       /*   File                     104  */
  261.    save_file,                       /*   Save                     105  */
  262.    save_as_file,                    /*   SaveAs                   106  */
  263.    change_fattr,                    /*   SetFileAttributes        107  */
  264.    edit_next_file,                  /*   EditNextFile             108  */
  265.    search_and_seize,                /*   DefineGrep               109  */
  266.    search_and_seize,                /*   RepeatGrep               110  */
  267.    redraw_screen,                   /*   RedrawScreen             111  */
  268.    size_window,                     /*   SizeWindow               112  */
  269.    split_horizontal,                /*   SplitHorizontal          113  */
  270.    split_vertical,                  /*   SplitVertical            114  */
  271.    next_window,                     /*   NextWindow               115  */
  272.    prev_window,                     /*   PreviousWindow           116  */
  273.    zoom_window,                     /*   ZoomWindow               117  */
  274.    next_hidden_window,              /*   NextHiddenWindow         118  */
  275.    set_marker,                      /*   SetMark1                 119  */
  276.    set_marker,                      /*   SetMark2                 120  */
  277.    set_marker,                      /*   SetMark3                 121  */
  278.    goto_marker,                     /*   GotoMark1                122  */
  279.    goto_marker,                     /*   GotoMark2                123  */
  280.    goto_marker,                     /*   GotoMark3                124  */
  281.    record_on_off,                   /*   RecordMacro              125  */
  282.    play_back,                       /*   PlayBack                 126  */
  283.    save_strokes,                    /*   SaveMacro                127  */
  284.    load_strokes,                    /*   LoadMacro                128  */
  285.    clear_macros,                    /*   ClearAllMacros           129  */
  286.    pause,                           /*   Pause                    130  */
  287.    quit,                            /*   Quit                     131  */
  288.    next_dirty_line,                 /*   NextDirtyLine            132  */
  289.    prev_dirty_line,                 /*   PrevDirtyLine            133  */
  290.    find_regx,                       /*   FindRegX                 134  */
  291.    find_regx,                       /*   RepeatFindRegX           135  */
  292.    find_regx,                       /*   RepeatFindRegXBackward   137  */
  293.    search_and_seize,                /*   DefineRegXGrep           138  */
  294.    two_key                          /*   TwoCharKey               139  */
  295. };
  296.  
  297. /*
  298.  * set the 256 possible function keys to FS (First Stroke)
  299.  * set the 1024 stroke buffer keys to SK (Stroke Key) and SN (Stroke Next)
  300.  */
  301. #define         FS      ((STROKE_LIMIT)+1)
  302. #define         SK      ((MAX_KEYS)+1)
  303. #define         SN      ((STROKE_LIMIT)+1)
  304.  
  305. MACRO macro = {
  306.    "$macbuf",
  307.                /* 16 rows of 16 = 256 = MAX_KEYS */
  308.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  309.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  310.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  311.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  312.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  313.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  314.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  315.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  316.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  317.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  318.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  319.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  320.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  321.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  322.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  323.    FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS, FS,
  324.                  /* 102.4 rows of 10 = 1024 = STROKE_LIMIT */
  325. {{SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  326. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  327. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  328. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  329. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  330. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  331. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  332. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  333. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  334. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  335. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  336. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  337. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  338. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  339. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  340. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  341. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  342. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  343. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  344. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  345. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  346. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  347. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  348. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  349. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  350. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  351. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  352. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  353. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  354. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  355. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  356. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  357. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  358. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  359. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  360. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  361. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  362. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  363. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  364. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  365. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  366. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  367. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  368. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  369. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  370. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  371. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  372. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  373. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  374. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  375. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  376. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  377. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  378. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  379. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  380. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  381. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  382. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  383. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  384. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  385. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  386. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  387. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  388. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  389. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  390. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  391. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  392. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  393. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  394. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  395. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  396. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  397. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  398. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  399. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  400. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  401. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  402. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  403. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  404. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  405. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  406. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  407. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  408. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  409. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  410. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  411. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  412. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  413. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  414. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  415. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  416. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  417. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  418. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  419. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  420. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  421. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  422. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  423. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  424. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  425. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  426. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN},
  427. {SK, SN}, {SK, SN}, {SK, SN}, {SK, SN} }
  428. };
  429.